package login.web;

import login.domain.User;
import login.web.dao.UserDao;
import login.web.dao.UserDaoImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

/**
 * @Author Administrator
 * @Date 2020/6/4 16:38
 **/
@WebServlet("/login")
public class Login extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       /*1、设置请求编码
         2、获取请求参数
         3、比较验证码是否一致
            请求参数中获取的验证码，图片中的验证码（session）
            请求不一致，保存错误信息，转发到jsp
            若一致，比较用户名或密码是否一致
              若不一致，保存错误信息，转发到jsp
              若一致，保存用户信息，重定向到另一面
        */
        request.setCharacterEncoding("utf-8");
        String checkcode = request.getParameter("checkcode");
        /*获取session中保存的验证码*/
        HttpSession session = request.getSession();
        String session_code = (String) session.getAttribute("session_code");
        /*比较验证码是否一致（忽略大小写）*/
        if (checkcode.equalsIgnoreCase(session_code)){
            /*验证码一致
            * 1)获取用户输入的用户名和密码
            * 2）调用dao层方法，判断用户输入的用户名和密码与数据库中保存的是否一致
            *  根据返回值莫若返回值为空，表示不一致，将错误信息保存在request域，转发到登陆页面
            * 若一致，把用户信息保存在session域，重定向到另一页面
            System.out.println("验证码一致，接下来比较用户名和密码是否一致");*/
            String name = request.getParameter("name");
            String password = request.getParameter("password");
           UserDao dao = new UserDaoImpl();
            User login = dao.login(name,password);
            if (login==null){
                /*用户名密码错误*/
                request.setAttribute("error_login","用户名或密码错误");
                request.getRequestDispatcher("/logincheckcode.jsp").forward(request,response);
            }else{
                /*用户名密码正确*/
                request.getSession().setAttribute("user",login);
                /*重定向的路径：需要加上项目路径*/
                String contextPath = request.getContextPath();
                response.sendRedirect(contextPath+"/a.jsp");
            }


        }else{
            /*验证码不一致
            * 1）错误信息保存request域
            * 2）转发到登陆页面（页面上去获得request域中的内容，展示出来） */
            request.setAttribute("error_login","验证码错误");
            request.getRequestDispatcher("/logincheckcode.jsp").forward(request,response);
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}
